package code.D1222;

import java.util.HashMap;

/**
 * author： yeswater
 * create： 2023/12/22
 *
 * 和为k的子数组 ： 数组中元素的连续非空序列
 *
 */
public class T560 {
    // 前缀和 + 哈希表
    public int subarraySum(int[] nums, int k) {
        int n = nums.length, ans = 0;
        int[] sum = new int[n + 10];
        for (int i = 1; i <= n; i++) {
            sum[i] = sum[i-1] + nums[i-1];
        }
        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(0,1);
        for (int i = 1; i <= n; i++) {
            int t = sum[i], d = t - k;
            ans += map.getOrDefault(d, 0);
            map.put(t, map.getOrDefault(t, 0) + 1);
        }
        return ans;
    }
}
